Most windows have rather simple clip regions, consisting of a small number of rectangles. For this common case, the hardware can support a set of clip rectangles to quickly clip rendered pixels not belonging to the window [12]. The number of clip rectangles varies with graphics hardware but is typically less than eight. These clip rectangles are generally part of the graphics hardware context. The context for each direct renderer can use the same rectangular clipping hardware.
Arbitrary window clips will require far more clip rectangles than is reasonable to support in hardware. A second method of clipping is used for such windows. SGI hardware also supports clipping planes. Clipping planes are non-visible frame buffer planes used to encode per-pixel clipping IDs (often called CIDs). If the pixels of a window all have the same CID (and only pixels belonging to the window have that CID), the graphics hardware can clip to an arbitrary window by enabling CID testing. A pixel rendered into the window is drawn only if the CID of the pixel being modified matches the CID that is set in the graphic hardware context.
The number of planes set aside for maintaining CIDs can be rather small. On low-end SGI hardware, the clipping planes are only 2 bits deep. This means three CIDs are possible (2 bit planes provide 4 CID values but one CID value must be used for screen real estate not belonging to the CID assigned windows). As will be explained later, CIDs may need to be virtualized because they are a limited resource.